home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-26 | 5.8 KB | 185 lines | [TEXT/MPS ] |
- #
- # File: ThreeWayMerge.Action
- #
- # Contains: xxx put contents here xxx
- #
- # This script is subroutine called by the main ThreeWayMerge script
- # to process each change record.
- #
- # Owned by: Jens Alfke, William Cook, Alex McKale
- #
- # Copyright: © 1992,1995-1996 by Apple Computer, Inc., all rights reserved.
- #
- # Change History (most recent first):
- #
- # <2> 2/26/96 agm cleaned up for ETO 20.
- # <1> 5/25/95 jpa first checked in
- #
-
- # variable dictionary
- #
- # InConflict true if we are in a conflict
- # ConflictEnd position of end of current conflict
- # SameChanges true if the two versions made the same changes
- # CopyEnd temporary indicating where to stop copying output
- # CopyStart
- #
- # ConflictEnd1
- # ConflictFile1
- # CopyEnd1
- # CopyStart1
- #
- # ConflictEnd2
- # ConflictFile2
- # CopyEnd2
- # CopyStart2
- #
- # LastChangeEnd previous versions of above verables
- # LastChangeStart
- # LastFileName
- # LastNewEnd
- # LastNewStart
- #
-
- #echo "#### {ChangeStart}:{ChangeEnd} {NewStart}:{NewEnd} {FileName} inconf={InConflict} copyS={CopyStart} confE={ConflictEnd}"
-
- if "{InConflict}" == 1
- # lets see if we are out of the conflict
- if "{ConflictEnd}" >= "{ChangeStart}"
- # still in conflict.
- if "{FileName}" == "{ConflictFile1}"
- # append to conflict1
- Set ConflictEnd1 "{ChangeEnd}"
- Set CopyEnd1 "{NewEnd}"
- else
- Set ConflictEnd2 "{ChangeEnd}"
- Set CopyEnd2 "{NewEnd}"
- end
- if "{ChangeEnd}" > "{ConflictEnd}"
- Set ConflictEnd "{ChangeEnd}"
- end
- Set LastFileName "{FileName}"
- Exit
- else
- # we are out of the conflict
- Set CopyEnd1 `evaluate "{CopyEnd1}" + "{ConflictEnd}" - "{ConflictEnd1}"`
- If "{CopyStart1}" < "{CopyEnd1}"
- #echo "#### {ConflictFile1} {CopyStart1}:{CopyEnd1}"
- streamedit -d -e "{CopyStart1},{CopyEnd1} print" "{ConflictFile1}" > "{TempFolder}ThreeWayMerge•Conflict1"
- Else
- If "{CopyStart1}" == "{CopyEnd1}"
- #echo "#### {ConflictFile1} {CopyStart1}"
- streamedit -d -e "{CopyStart1} print" "{ConflictFile1}" > "{TempFolder}ThreeWayMerge•Conflict1"
- End
- Else
- echo -n > "{TempFolder}ThreeWayMerge•Conflict1"
- End
- Set CopyEnd2 `evaluate "{CopyEnd2}" + "{ConflictEnd}" - "{ConflictEnd2}"`
- If "{CopyStart2}" < "{CopyEnd2}"
- #echo "#### {ConflictFile2} {CopyStart2}:{CopyEnd2}"
- streamedit -d -e "{CopyStart2},{CopyEnd2} print" "{ConflictFile2}" > "{TempFolder}ThreeWayMerge•Conflict2"
- Else
- If "{CopyStart2}" == "{CopyEnd2}"
- #echo "#### {ConflictFile2} {CopyStart2}"
- streamedit -d -e "{CopyStart2} print" "{ConflictFile2}" > "{TempFolder}ThreeWayMerge•Conflict2"
- End
- Else
- echo -n > "{TempFolder}ThreeWayMerge•Conflict2"
- End
- # compare the changes
- set oldExit "{exit}"
- set exit 0
- equal -d -q "{TempFolder}ThreeWayMerge•Conflict1" "{TempFolder}ThreeWayMerge•Conflict2"
- set SameChanges "{Status}"
- set exit "{oldExit}"
- if "{SameChanges}" == 0
- # they are equal
- catenate "{TempFolder}ThreeWayMerge•Conflict1"
- else
- echo " File ∂"{{ConflictFile1}}∂"; Line {CopyStart1}:{CopyEnd1}; File ∂"{{ConflictFile2}}∂"; Line {CopyStart2}:{CopyEnd2} ### CONFLICT!" ∑∑ Dev:StdErr
- echo "••• BEGIN ••• Conflict version: ∂"{ConflictFile1}∂" •••"
- catenate "{TempFolder}ThreeWayMerge•Conflict1"
- echo "••• ELSE •••• Conflict version: ∂"{ConflictFile2}∂" •••"
- catenate "{TempFolder}ThreeWayMerge•Conflict2"
- echo "••• END ••••• Conflict •••"
- end
-
- # prepare to continue
- if "{LastFileName}" == "{ConflictFile1}"
- Set LastNewEnd `evaluate "{CopyEnd1}"`
- Set CopyStart `evaluate "{CopyEnd1}" + 1`
- else
- Set LastNewEnd `evaluate "{CopyEnd2}"`
- Set CopyStart `evaluate "{CopyEnd2}" + 1`
- end
- Set LastChangeEnd "{ConflictEnd}"
- Set InConflict 0
- end
- End
- if "{LastChangeEnd}" < "{ChangeStart}" ∂
- && "{ChangeStart}" != "{LastChangeStart}" ∂
- && "{ChangeEnd}" != "{LastChangeEnd}"
- # something from the other file... check for conflicts
- if "{ChangeStart}" == 9999999
- # We're done, so clean up...
- Set CopyEnd `count -l "{LastFileName}"`
- If "{CopyStart}" < "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}:{CopyEnd}"
- streamedit -d -e "{CopyStart},{CopyEnd} print" "{LastFileName}"
- Else
- If "{CopyStart}" == "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}"
- streamedit -d -e "{CopyStart} print" "{LastFileName}"
- End
- End
- Set CopyStart "{NewStart}"
- else
- if "{LastFileName}" != "" && "{FileName}" != "{LastFileName}"
- # switching files, so just print out the stuff we've
- # been saving up.
- Set CopyEnd `evaluate "{LastNewEnd}" + "{ChangeStart}" - "{LastChangeEnd}" - 1`
- If "{CopyStart}" < "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}:{CopyEnd}"
- streamedit -d -e "{CopyStart},{CopyEnd} print" "{LastFileName}"
- Else If "{CopyStart}" == "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}"
- streamedit -d -e "{CopyStart} print" "{LastFileName}"
- End
- Set CopyStart "{NewStart}"
- end
- end
- Set LastChangeEnd "{ChangeEnd}"
- Set LastChangeStart "{ChangeStart}"
- Set LastNewStart "{NewStart}"
- Set LastNewEnd "{NewEnd}"
- else
- # we have a conflict, so print out saved stuff up
- # to last change problem
- Set CopyEnd `evaluate "{LastNewStart}" - 1`
- If "{CopyStart}" < "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}:{CopyEnd}"
- streamedit -d -e "{CopyStart},{CopyEnd} print" "{LastFileName}"
- Else If "{CopyStart}" == "{CopyEnd}"
- #echo "#### {LastFileName} {CopyStart}"
- streamedit -d -e "{CopyStart} print" "{LastFileName}"
- End
- # now we remember where we are...
- Set ConflictFile1 "{LastFileName}"
- Set CopyStart1 "{LastNewStart}"
- Set CopyEnd1 "{LastNewEnd}"
- Set ConflictEnd1 "{LastChangeEnd}"
-
- Set ConflictFile2 "{FileName}"
- Set CopyStart2 `evaluate "{NewStart}" - "{ChangeStart}" + "{LastChangeStart}"`
- Set CopyEnd2 "{NewEnd}"
- Set ConflictEnd2 "{ChangeEnd}"
-
- Set InConflict 1
- If "{ConflictEnd1}" > "{ConflictEnd2}"
- Set ConflictEnd "{ConflictEnd1}"
- Else
- Set ConflictEnd "{ConflictEnd2}"
- End
- end
- Set LastFileName "{FileName}"
-